iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
Mobile Development

從零開始的IOS開發日常系列 第 21

[鐵人賽 Day 21] Swift 仿刻 IOS 內建的 Clock - 鬧鐘 (3) 重複天數程式碼

  • 分享至 

  • xImage
  •  

今天要介紹的是鬧鐘的基本資訊編輯,我們平日工作或上學的時候可能需要鬧鐘週一~週五叫我們起床,但假日我們想睡到自然醒,我們就不需要鬧鐘的通知了! 所以我們需要去編輯,一~五固定通知!

編輯重複鬧鈴的程式碼

按下這個 Button 會跳到下一個頁面

這個是編輯有幾天會響鈴的頁面,可以重複打勾
其實裡面這塊是 TabelView 所以我們要先創建一個陣列來存放需要在 TabelView 的內容!

var day = ["Every Sonday" , "Every Monday" , "Every Tuesday" , "Every Wednesday" , "Every Thursday" , "Every Friday" , "Every Saturday"]

再來我們要把它寫進 TabelView 以下是 TabelView 的程式碼內容
以下是判斷需要印出多少 Cell 的程式碼

extension  day_insert : UITableViewDelegate , UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        day.count
    }                //需要印出的 Cell 數量

再來我們要寫出判斷有哪幾天的天數是被勾選起來的,並且按下去的時候可以改變勾選的狀態!

我們要先建立一個單例,裡面存放我們要傳到編輯基本資訊頁面的值,也可以判斷有哪些值在這個頁面的 TabelView 是需要勾選起來的
因為預設是每一天,所以我們先給他 0、2、3、4、5、6 (依序是星期日~星期六))

class day_value {
    var select = [0,1,2,3,4,5,6]
    static let shared = day_value()
    private init() {}
}

我們在之後要印出 Cell 裡面的內容

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "daypick_cell", for: indexPath) as! daypick_cell
        cell.label.text = day[indexPath.row]  //這邊就是根據 day[indexPath.row] 的陣列內容印出星期六~星期日
        if day_value.shared.select.contains(indexPath.row) {
            cell.accessoryType = .checkmark
        }
        else {
            cell.accessoryType = .none
        }
        return cell
    }                //這邊是利用 .accessoryType 的內建函式去幫有在被選擇到的天數印上打勾的樣式,在單例陣列裡的會被打勾,沒有的話就不會印出
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if day_value.shared.select.contains(indexPath.row) {
            day_value.shared.select = day_value.shared.select.filter{$0 != indexPath.row}
        }
        else {
            day_value.shared.select.append(indexPath.row)
        }
        day_value.shared.select.sort(by: <)
        tableView.reloadRows(at: [indexPath], with: .automatic)
    }
    
}           //這邊就是判斷當 Cell 被點擊到的時候需要把代表那個星期的數字放進單例陣列裡(day_value.shared.select)


上一篇
[鐵人賽 Day 20] Swift 仿刻 IOS 內建的 Clock - 鬧鐘 (2) PickerView程式碼撰寫
下一篇
# Swift 仿刻 IOS 內建的 Clock - 鬧鐘 (4) 鬧鐘基本資訊編輯
系列文
從零開始的IOS開發日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言